﻿Imports ClasesRestaurante
Public Class FormAdmMesas

    Private metodosMesa As New Mesa("", "", 0)

    Private Sub FormAdmMesas_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Limpiar()
        cargarCbo()
    End Sub

    Private Sub Limpiar()
        txtNombreMesa.Text = ""
        txtDescripcionMesa.Text = ""
        txtCapacidadMesa.Text = ""

        lblPHNombre.Visible = True
        lblPHDescripcion.Visible = True
        lblPHCapacidad.Visible = True

        cboMesas.Items.Clear()
        cboMesas.Focus()

    End Sub

    Private Sub TextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNombreMesa.GotFocus, txtDescripcionMesa.GotFocus, txtCapacidadMesa.GotFocus

        Dim textBox = TryCast(sender, TextBox)

        Select Case textBox.Name
            Case "txtNombreMesa"
                lblPHNombre.Visible = False
            Case "txtDescripcionMesa"
                lblPHDescripcion.Visible = False
            Case "txtCapacidadMesa"
                lblPHCapacidad.Visible = False
        End Select

    End Sub
    Private Sub TextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNombreMesa.LostFocus, txtDescripcionMesa.LostFocus, txtCapacidadMesa.LostFocus

        Dim textBox = TryCast(sender, TextBox)

        Select Case textBox.Name
            Case "txtNombreMesa"
                If textBox.Text.Length = 0 Then
                    lblPHNombre.Visible = True
                End If
            Case "txtDescripcionMesa"
                If textBox.Text.Length = 0 Then
                    lblPHDescripcion.Visible = True
                End If
            Case "txtCapacidadMesa"
                If textBox.Text.Length = 0 Then
                    lblPHCapacidad.Visible = True
                End If
        End Select

    End Sub
    Private Sub label_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblPHNombre.MouseHover, lblPHDescripcion.MouseHover, lblPHCapacidad.MouseHover

        Dim label = TryCast(sender, Label)

        Select Case label.Name
            Case "lblPHNombre"
                lblPHNombre.Visible = False
            Case "lblPHDescripcion"
                lblPHDescripcion.Visible = False
            Case "lblPHCapacidad"
                lblPHCapacidad.Visible = False
        End Select

    End Sub

    Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click

        Dim mensaje As String
        mensaje = metodosMesa.ComprobarMesa(txtNombreMesa.Text, txtDescripcionMesa.Text, txtCapacidadMesa.Text)

        If mensaje <> "OK" Then
            MessageBox.Show(mensaje, "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        'Introducir nueva mesa
        If MesasRestaurante.ContainsKey(txtNombreMesa.Text) Then
            MessageBox.Show("Esa mesa ya existe", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtNombreMesa.Clear()
            txtNombreMesa.Focus()
            Exit Sub
        Else
            MesasRestaurante.Add(txtNombreMesa.Text, New Mesa(txtNombreMesa.Text, txtDescripcionMesa.Text, txtCapacidadMesa.Text))
        End If
        Limpiar()
        cargarCbo()

    End Sub

    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        'Si no se a elegido una mesa...

        If cboMesas.SelectedItem Is Nothing Then
            MessageBox.Show("Tiene que seleccionar la mesa a modificar.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        Dim mensaje As String
        mensaje = metodosMesa.ComprobarMesa(txtNombreMesa.Text, txtDescripcionMesa.Text, txtCapacidadMesa.Text)

        If mensaje <> "OK" Then
            MessageBox.Show(mensaje, "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        MesasRestaurante.Remove(cboMesas.Text)
        MesasRestaurante.Add(txtNombreMesa.Text, New Mesa(txtNombreMesa.Text, txtDescripcionMesa.Text, txtCapacidadMesa.Text))

        Limpiar()
        cargarCbo()

    End Sub

    'Cada vez que se elija una mesa, se escriben los datos 
    Private Sub cboMesas_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboMesas.SelectedValueChanged
        txtNombreMesa.Text = MesasRestaurante(cboMesas.Text).NombreMesa
        txtDescripcionMesa.Text = MesasRestaurante(cboMesas.Text).DescripcionMesa
        txtCapacidadMesa.Text = MesasRestaurante(cboMesas.Text).Capacidad
        lblInvisible()
    End Sub

    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click

        If cboMesas.SelectedItem Is Nothing Then
            MessageBox.Show("Tiene que seleccionar la mesa a modificar.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If
        'Borra el elemento
        MesasRestaurante.Remove(cboMesas.Text)

        Limpiar()
        cargarCbo()
        
    End Sub

    'Actualiza o carga el combo box
    Private Sub cargarCbo()
        cboMesas.Items.Clear()
        For i As Integer = 0 To MesasRestaurante.Keys.Count - 1
            cboMesas.Items.Add(MesasRestaurante.Keys(i))
        Next
    End Sub

    'Esconde los lebels de los text box
    Private Sub lblInvisible()
        lblPHNombre.Visible = False
        lblPHDescripcion.Visible = False
        lblPHCapacidad.Visible = False
    End Sub

End Class